﻿using System;
using System.Windows.Forms;
using QuanLyThuPhiTaiLieu.Biz;
using QuanLyThuPhiTaiLieu.Common;
using QuanLyThuPhiTaiLieu.Entity;

namespace QuanLyThuPhiTaiLieu.Forms
{
    public partial class NewKhaiThacVaSuDungTaiLieu : Form
    {
        private int id;

        public NewKhaiThacVaSuDungTaiLieu()
        {
            InitializeComponent();

            LoadLoaiTaiLieu();
            LoadDangLoaiTaiLieu();
        }

        public NewKhaiThacVaSuDungTaiLieu(int id)
        {
            InitializeComponent();

            LoadLoaiTaiLieu();
            LoadDangLoaiTaiLieu();

            this.id = id;
        }

        private void SaveItem(object sender, EventArgs e)
        {
            if (Validate())
            {
                string message;

                var biz = new KhaiThacVaSuDungTaiLieuBiz();

                var item = new KhaiThacVaSuDungTaiLieu
                {                   
                    LoaiTaiLieu = Convert.ToString(rdlLoaiTaiLieu.SelectedItem),
                    DangLoaiTaiLieu = Convert.ToString(rdlDangLoaiTaiLieu.SelectedItem),
                    MaTaiLieu = textMaTaiLieu.Text,
                    TenLoaiTaiLieu = textLoaiTaiLieu.Text,
                    DonViTinh = textDonViTinh.Text,
                    MucThuPhoto = Utilities.GetNumberFieldValue(numberPhiPhoto.Value),
                    MucThuIn = Utilities.GetNumberFieldValue(numberIn.Value),
                    MucThuOffice = Utilities.GetNumberFieldValue(numberWord.Value),
                    MucThuRastor = Utilities.GetNumberFieldValue(numberRastor.Value),
                    MucThuVector = Utilities.GetNumberFieldValue(numberVector.Value),
                };


                if (id > 0)
                {
                    item.Id = id;
                    biz.UpdateItem(item);

                    message = Constants.Messages.UpdateCompleted;
                }
                else
                {
                    biz.SaveItem(item);
                    message = Constants.Messages.InsertCompleted;
                }

                MessageBox.Show(message);
                Utilities.CloseForm(this, new ViewKhaiThacVaSuDungTaiLieu());
            }
        }
        
        private void Cancel(object sender, EventArgs e)
        {
            Utilities.CloseForm(this, new ViewKhaiThacVaSuDungTaiLieu());
        }

        private new bool Validate()
        {
            bool hasError = true;
            bool isFocused = false;
            errorProvider.Clear();

            if (string.IsNullOrEmpty(textMaTaiLieu.Text))
            {
                errorProvider.SetError(textMaTaiLieu, Constants.Messages.RequireMessage);
                hasError = false;

                textMaTaiLieu.Focus();
                isFocused = true;
            }

            if (string.IsNullOrEmpty(textLoaiTaiLieu.Text))
            {
                errorProvider.SetError(textLoaiTaiLieu, Constants.Messages.RequireMessage);
                hasError = false;

                if (!isFocused)
                {
                    textLoaiTaiLieu.Focus();
                }
                isFocused = true;
            }

            if (string.IsNullOrEmpty(textDonViTinh.Text))
            {
                errorProvider.SetError(textDonViTinh, Constants.Messages.RequireMessage);
                hasError = false;
                if (!isFocused)
                {
                    textDonViTinh.Focus();
                }
            }

            return hasError;
        }

        private void FormLoad(object sender, EventArgs e)
        {
            var parent = MdiParent as MDI;
            if (parent != null)
            {
                //Utilities.ResetBackColor(parent.TopMenu, Constants.MenuIndex.TaiLieuVanBanPhapLy);
                parent.Status.Text = Constants.FormStatus.KhaiThacVaSuDungTaiLieu;
            }

            if (id > 0)
            {
                var biz = new KhaiThacVaSuDungTaiLieuBiz();
                var item = biz.LoadItem(id);

                textMaTaiLieu.Text = Convert.ToString(item.MaTaiLieu);
                textLoaiTaiLieu.Text = Convert.ToString(item.LoaiTaiLieu);
                textDonViTinh.Text = Convert.ToString(item.DonViTinh);
                numberPhiPhoto.Value = item.MucThuPhoto;
                numberIn.Value = item.MucThuIn;
                numberRastor.Value = item.MucThuRastor;
                numberWord.Value = item.MucThuOffice;
                numberVector.Value = item.MucThuVector;

                rdlLoaiTaiLieu.SelectedIndex = rdlLoaiTaiLieu.FindString(item.LoaiTaiLieu);
                rdlDangLoaiTaiLieu.SelectedIndex = rdlDangLoaiTaiLieu.FindString(item.DangLoaiTaiLieu);                
            }

            textMaTaiLieu.Focus();
        }

        private void LoadLoaiTaiLieu()
        {
            rdlLoaiTaiLieu.Items.Add("Báo cáo điều tra, tìm kiếm, đánh giá, thăm dò khoáng sản");
            rdlLoaiTaiLieu.Items.Add("Báo cáo đo vẽ lập bản đồ địa chất khoáng sản");
            rdlLoaiTaiLieu.Items.Add("Báo cáo địa chất đô thị");
            rdlLoaiTaiLieu.Items.Add("Báo cáo Địa chất thủy văn - Địa chất công trình");
            rdlLoaiTaiLieu.Items.Add("Báo cáo Địa vật lý");
            rdlLoaiTaiLieu.Items.Add("Tài liệu quy hoạch điều tra cơ bản địa chất về tài nguyên khoáng sản, quy hoạch thăm dò, khai thác, chế biến và sử dụng khoáng sản");
            rdlLoaiTaiLieu.Items.Add("Báo cáo nghiên cứu chuyên đề");            
        }

        private void LoadDangLoaiTaiLieu()
        {
            rdlDangLoaiTaiLieu.Items.Add(string.Empty);
            rdlDangLoaiTaiLieu.Items.Add("Thuyết minh");
            rdlDangLoaiTaiLieu.Items.Add("Bản vẽ");
            rdlDangLoaiTaiLieu.Items.Add("Phụ lục");            
        }
    }
}
